Method and apparatus for encoding/decoding an image based on in-loop filter

ABSTRACT

An image encoding/decoding method and apparatus of the present invention may divide one picture into a plurality of division units, determine whether to perform filtering on a boundary of a current division unit based on a predetermined flag, and perform filtering on the boundary of the current division unit in response to the determination.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/025,455 filed on Sep. 18, 2020 which Pursuant to 35 U.S.C. §§ 120 and365(c), is a Bypass Continuation of International Application No.PCT/KR2020/012252, filed on Sep. 10, 2020, which claims the benefitunder 35 U.S.C. §§ 119(a) and 365(b) of Korean Patent Application No.10-2019-0115073, filed on Sep. 18, 2019, in the Korean IntellectualProperty Office, the entire disclosure of which is incorporated hereinby reference for all purposes.

TECHNICAL FIELD

The present invention relates to an image encoding/decoding method andapparatus.

BACKGROUND ART

Recently, demand for high-resolution and high-quality images such asHigh Definition (HD) images and Ultra High Definition (UHD) images isincreasing in various application fields, and accordingly,high-efficiency image compression techniques are being discussed.

For image compression technology, various technologies such as interprediction technology that predicts pixel value included in the currentpicture from a picture before or after the current picture using imagecompression technology, intra prediction technology that predicts pixelvalue included in the current picture by using pixel information in thecurrent picture, an entropy encoding technology that allocates a shortcode to a value with a high frequency of appearance and a long code to avalue with a low frequency of appearance, exist, and by using such theimage compression technology, image data can be effectively compressedand transmitted or stored.

DISCLOSURE Technical Problem

An object of the present invention is to provide a method and apparatusfor dividing a picture into a predetermined division unit.

An object of the present invention is to provide a method and apparatusfor adaptively performing filtering on a boundary of a division unit.

An object of the present invention is to provide a method and apparatusfor applying an improved deblocking filter.

Technical Solution

The video decoding method and apparatus according to the presentinvention may divide one picture into a plurality of division units,determine whether to perform filtering on a boundary of a currentdivision unit based on a predetermined flag, and perform filtering onthe boundary of the current division unit in response to thedetermination.

In the video decoding method and apparatus according to the presentinvention, the division unit may include at least one of a sub picture,a slice, or a tile.

In the video decoding method and apparatus according to the presentinvention, the flag may include at least one of a first flag indicatingwhether filtering is performed on a boundary of a division unit withinthe one picture or a second flag indicating whether filtering isperformed on the boundary of the current division unit in the onepicture.

In the video decoding method and apparatus according to the presentinvention, when the first flag is a first value, it may not berestricted so that filtering is not performed on the boundary of thedivision unit within the one picture, and when the first flag is asecond value, the restriction on the boundary of the division unitwithin the picture may not be imposed.

In the video decoding method and apparatus according to the presentinvention, when the second flag is the first value, it may be restrictedso that filtering is not performed on the boundary of the currentdivision unit, and when the second flag is the second value, filteringmay be allowed to be performed on the boundary of the current divisionunit.

In the video decoding method and apparatus according to the presentinvention, the second flag may be decoded only when it is not restrictedso that filtering is not performed on the boundary of the division unitwithin the one picture according to the first flag.

In the video decoding method and apparatus according to the presentinvention, whether to perform filtering on the boundary of the currentdivision unit may be determined by further considering a third flagindicating whether filtering is performed on a boundary of a neighboringdivision unit adjacent to the current block unit.

In the video decoding method and apparatus according to the presentinvention, a position of the neighboring division unit may be determinedbased on whether the boundary of the current division unit is a verticalboundary or a horizontal boundary.

In the video decoding method and apparatus according to the presentinvention, the step of performing the filtering may comprise, specifyinga block boundary for deblocking filtering, deriving a decision value forthe block boundary, determining a filter type for the deblockingfiltering based on the decision value, and performing filtering on theblock boundary based on the filter type.

The video encoding method and apparatus according to the presentinvention may divide one picture into a plurality of division units,determine whether to perform filtering on a boundary of a currentdivision unit, and perform filtering on the boundary of the currentdivision unit in response to the determination.

In the video encoding method and apparatus according to the presentinvention, the division unit may include at least one of a sub picture,a slice, or a tile.

In the video encoding method and apparatus according to the presentinvention, the step of determining whether to perform filtering on theboundary of the current division unit may comprise, encoding at leastone of a first flag indicating whether filtering is performed on aboundary of a division unit within the one picture or a second flagindicating whether filtering is performed on the boundary of the currentdivision unit in the one picture.

In the video encoding method and apparatus according to the presentinvention, when it is determined that filtering is restricted not to beperformed on the boundary of the division unit within the one picture,the first flag may be encoded as a first value, and when it isdetermined that the restriction is not imposed on the boundary of thedivision unit within the picture, the first flag may be encoded as asecond value.

In the video encoding method and apparatus according to the presentinvention, when it is determined that filtering is restricted not to beperformed on the boundary of the current division unit, the second flagmay be encoded as the first value, and when it is determined thatfiltering is allowed to be performed on the boundary of the currentdivision unit, the second flag may be encoded as the second value.

In the video encoding method and apparatus according to the presentinvention, the second flag may be encoded only when it is not restrictedso that filtering is not performed on the boundary of the division unitwithin the one picture.

In the video encoding method and apparatus according to the presentinvention, whether to perform filtering on the boundary of the currentdivision unit may be determined by further considering a third flagindicating whether filtering is performed on a boundary of a neighboringdivision unit adjacent to the current block unit.

In the video encoding method and apparatus according to the presentinvention, a position of the neighboring division unit may be determinedbased on whether the boundary of the current division unit is a verticalboundary or a horizontal boundary.

In the video encoding method and apparatus according to the presentinvention, wherein the step of performing the filtering comprises,specifying a block boundary for deblocking filtering, deriving adecision value for the block boundary, determining a filter type for thedeblocking filtering based on the decision value, and performingfiltering on the block boundary based on the filter type.

Advantageous Effects

According to the present invention, encoding/decoding efficiency can beimproved by dividing one picture into various division units.

According to the present invention, encoding/decoding efficiency can beimproved by adaptively performing filtering on the boundary of thedivision unit.

According to the present invention, image quality can be improved byapplying an improved deblocking filter to a reconstructed image.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram showing an image encoding apparatus accordingto an embodiment of the present invention.

FIG. 2 is a block diagram showing an image decoding apparatus accordingto an embodiment of the present invention.

FIGS. 3 to 6 illustrate a method of dividing one picture into one ormore division units according to the present disclosure.

FIG. 7 illustrates a method of performing filtering based on apredetermined flag according to the present disclosure.

FIGS. 8 to 15 illustrate a method of determining whether filtering isperformed on a boundary of a division unit based on one or more flagsaccording to the present disclosure.

FIG. 16 illustrates a method of applying a deblocking filter accordingto the present disclosure.

MODE FOR INVENTION

In the present invention, various modifications may be made and variousembodiments may be provided, and specific embodiments will beillustrated in the drawings and described in detail in the detaileddescription. However, this is not intended to limit the presentinvention to a specific embodiment, it should be understood to includeall changes, equivalents, and substitutes included in the idea and scopeof the present invention. In describing each drawing, similar referencenumerals have been used for similar elements.

Terms such as first and second may be used to describe variouscomponents, but the components should not be limited by the terms. Theseterms are used only for the purpose of distinguishing one component fromanother component. For example, without departing from the scope of thepresent invention, a first component may be referred to as a secondcomponent, and similarly, a second component may be referred to as afirst component. The term and/or includes a combination of a pluralityof related listed items or any of a plurality of related listed items.

When a component is referred to as being “connected” or “connected” toanother component, it may be directly connected or connected to theanother component, but it should be understood that other component mayexist in the middle. On the other hand, when a component is referred toas being “directly connected” or “directly connected” to anothercomponent, it should be understood that there is no other component inthe middle.

The terms used in the present application are only used to describespecific embodiments, and are not intended to limit the presentinvention. Singular expressions include plural expressions unless thecontext clearly indicates otherwise. In the present application, termssuch as “comprise” or “have” are intended to designate the presence offeatures, numbers, steps, actions, components, parts, or combinationsthereof described in the specification, but one or more other features.It should be understood that the presence or addition of elements ornumbers, steps, actions, components, parts, or combinations thereof,does not preclude in advance.

Hereinafter, preferred embodiments of the present invention will bedescribed in more detail with reference to the accompanying drawings.Hereinafter, the same reference numerals are used for the same elementsin the drawings, and duplicate descriptions for the same elements areomitted.

FIG. 1 is a block diagram showing an image encoding apparatus accordingto an embodiment of the present invention.

Referring to FIG. 1, the image encoding apparatus 100 may include apicture division unit 110, a prediction unit 120, 125, a transform unit130, a quantization unit 135, a rearrangement unit 160, and an entropyencoding unit 165, an inverse quantization unit 140, an inversetransform unit 145, a filter unit 150, and a memory 155.

Each of the components shown in FIG. 1 is independently shown torepresent different characteristic functions in an image encodingapparatus, and does not mean that each component is formed of separatehardware or a single software component. That is, each constituent partis listed and included as a respective constituent part for convenienceof explanation, and at least two constituent parts of each constituentpart are combined to form one constituent part, or one constituent partmay be divided into a plurality of constituent parts to perform afunction. Integrated embodiments and separate embodiments of thecomponents are also included in the scope of the present inventionunless departing from the essence of the present invention.

In addition, some of the components may not be essential components thatperform essential functions in the present invention, but may beoptional components only for improving performance. The presentinvention may be implemented by including only components essential toimplement the essence of the present invention excluding components usedfor performance improvement, and a structure including only essentialcomponents excluding optional components used for performanceimprovement may be also included in the scope of the present invention.

The picture division unit 110 may divide the input picture into at leastone processing unit. In this case, the processing unit may be aprediction unit (PU), a transform unit (TU), or a coding unit (CU). Thepicture division unit 110 may encode the picture by dividing into acombination of a plurality of coding units, prediction units, andtransform units, and selecting the combination of a coding unit, aprediction unit, and a transformation unit based on a predeterminedcriterion (for example, a cost function).

For example, one picture may be divided into a plurality of codingunits. In order to split the coding units in a picture, a recursive treestructure such as a quad tree structure may be used, and a coding unitthat is split into other coding unit based on one image or the largestcoding unit as a root may be divided with as many child nodes as thenumber of divided coding units. Coding units that are no longer splitaccording to certain restrictions become leaf nodes. That is, when it isassumed that only square splitting is possible for one coding unit, onecoding unit may be split into up to four different coding units.

Hereinafter, in an embodiment of the present invention, a coding unitmay be used as a meaning of a unit that performs encoding, or may beused as a meaning of a unit that performs decoding.

The prediction unit may be obtained by dividing one coding unit into atleast one square or non-square shape of the same size. One coding unitmay be divided such that one prediction unit of prediction units has adifferent shape and/or size from another prediction unit.

When a prediction unit that performs intra prediction based on a codingunit is not a minimum coding unit, intra prediction may be performedwithout dividing into a plurality of N×N prediction units.

The prediction units 120 and 125 may include an inter prediction unit120 that performs inter prediction, and an intra prediction unit 125that performs intra prediction. Whether to use inter prediction or intraprediction for a prediction unit may be determined, and specificinformation (e.g., intra prediction mode, motion vector, referencepicture, etc.) according to each prediction method may be determined. Inthis case, a processing unit in which prediction is performed may bedifferent from a processing unit in which a prediction method andspecific content are determined. For example, a prediction method and aprediction mode are determined in a prediction unit, and prediction maybe performed in a transformation unit. The residual value (residualblock) between the generated prediction block and the original block maybe input to the transform unit 130. In addition, prediction modeinformation, motion vector information, and the like used for predictionmay be encoded by the entropy encoding unit 165 together with theresidual value and transmitted to the decoder. In the case of using aspecific encoding mode, it is possible to encode an original block as itis and transmit it to a decoder without generating a prediction blockthrough the prediction units 120 and 125.

The inter prediction unit 120 may predict a prediction unit based oninformation of at least one of a previous picture or a subsequentpicture of the current picture, and in some cases, predict a predictionunit based on information of some regions, which encoding has beencompleted, in the current picture. The inter prediction unit 120 mayinclude a reference picture interpolation unit, a motion predictionunit, and a motion compensation unit.

The reference picture interpolation unit may receive reference pictureinformation from the memory 155 and generate pixel information of aninteger pixel or less in the reference picture. In the case of a lumapixel, a DCT-based 8-tap interpolation filter (DCT-based interpolationfilter) having different filter coefficients may be used to generatepixel information of an integer pixel or less in units of a ¼ pixels. Incase of a chroma signal, a DCT-based 4-tap interpolation filter(DCT-based interpolation filter) having different filter coefficientsmay be used to generate pixel information of an integer pixel or less inunits of ⅛ pixels.

The motion prediction unit may perform motion prediction based on thereference picture interpolated by the reference picture interpolationunit. As a method for calculating the motion vector, various methodssuch as Full Search-based Block Matching Algorithm (FBMA), Three StepSearch (TSS), and New Three-Step Search Algorithm (NTS) may be used. Themotion vector may have a motion vector value in units of ½ or ¼ pixelsbased on the interpolated pixels. The motion prediction unit may predicta current prediction unit by differently using a motion predictionmethod. Various methods such as a skip method, a merge method, an AMVP(Advanced Motion Vector Prediction) method, and an intra block copymethod may be used as the motion prediction method.

The intra prediction unit 125 may generate a prediction unit based onreference pixel information around a current block, which is pixelinformation in a current picture. When the neighboring block of thecurrent prediction unit is a block that performs inter prediction andthe reference pixel is a pixel that performs inter prediction, thereference pixel included in the block that performs inter prediction maybe used by replacing it with reference pixel information of a block thatperforms intra prediction around it. That is, when the reference pixelis not available, the unavailable reference pixel information may beused by replacing with at least one reference pixel among the availablereference pixels.

In intra prediction, the prediction mode may have a directionalprediction mode in which reference pixel information is used accordingto a prediction direction and a non-directional mode in whichdirectional information is not used when prediction is performed. A modefor predicting luma information and a mode for predicting chromainformation may be different, and intra prediction mode information orpredicted luma signal information used to predict luma information maybe used to predict chroma information.

When the size of the prediction unit and the size of the transformationunit are the same when performing intra prediction, intra prediction forthe prediction unit may be performed based on a pixel on the left, apixel on the above left, and a pixel on the above of the predictionunit. However, when the size of the prediction unit and the size of thetransformation unit are different when performing intra prediction,intra prediction may be performed using a reference pixel based on thetransformation unit. Also, intra prediction using N×N splitting may beused for only the minimum coding unit.

The intra prediction method may generate a prediction block afterapplying an AIS (Adaptive Intra Smoothing) filter to a reference pixelaccording to a prediction mode. The types of AIS filters applied to thereference pixels may be different. In order to perform the intraprediction method, the intra prediction mode of the current predictionunit may be predicted from the intra prediction mode of the predictionunit existing around the current prediction unit. When predicting theprediction mode of the current prediction unit using the modeinformation predicted from the neighboring prediction unit, if the intraprediction mode of the current prediction unit and the neighboringprediction unit are the same, information indicating that the predictionmode of the current prediction unit and the neighboring prediction unitsare the same may be transmitted using predetermined flag information,and if the prediction modes of the current prediction unit and theneighboring prediction units are different, entropy encoding may beperformed to encode prediction mode information of the current block.

In addition, a residual block including residual information that is adifference value between the prediction unit that performs predictionbased on the prediction units generated by the prediction units 120 and125 and the original block of the prediction unit may be generated. Thegenerated residual block may be input to the transform unit 130.

The transform unit 130 may transform a residual block including residualinformation between a prediction unit generated by the prediction units120 and 125 and the original block by using the transform method such asDCT (Discrete Cosine Transform), DST (Discrete Sine Transform), and KLT.Whether DCT, DST, or KLT is applied to transform the residual block maybe determined based on intra prediction mode information of a predictionunit used to generate the residual block.

The quantization unit 135 may quantize values transformed to thefrequency domain by the transform unit 130. The quantization coefficientmay vary depending on the block or the importance of the image. Thevalue calculated by the quantization unit 135 may be provided to theinverse quantization unit 140 and the rearrangement unit 160.

The rearrangement unit 160 may perform the rearrangement of thecoefficient value for the quantized residual value.

The rearrangement unit 160 may change coefficients of 2-dimensionalblock form into 1-dimensional vector form through a coefficient scanningmethod. For example, the rearrangement unit 160 may change into a1-dimensional vector form by scanning from a DC coefficient to acoefficient in a high frequency region according to a Zig-Zag Scanmethod. Depending on the size of the transform unit and the intraprediction mode, a vertical scan of scanning coefficients oftwo-dimensional block form in a column direction and a horizontal scanof scanning coefficients of two-dimensional block form in a rowdirection may be used instead of a zig-zag scan. That is, depending onthe size of the transform unit and the intra prediction mode, it may bedetermined which one of a zigzag scan, a vertical scan, and a horizontalscan is used.

The entropy encoding unit 165 may perform entropy-encoding based onvalues calculated by the rearrangement unit 160. Various encodingmethods, such as exponential Golomb, CAVLC (Context-Adaptive VariableLength Coding), and CABAC (Context-Adaptive Binary Arithmetic Coding),may be used for entropy-encoding.

The entropy encoder 165 may encode various information, such as residualvalue coefficient information, block type information, prediction modeinformation, division unit information, prediction unit information,transmission unit information, motion vector information, referenceframe information, block interpolation information, filteringinformation, etc.

The entropy encoder 165 may entropy-encode a coefficient value of acoding unit input from the reordering unit 160.

The inverse quantization unit 140 and the inverse transform unit 145inverse-quantize the values quantized by the quantization unit 135 andinverse-transform the values transformed by the transform unit 130. Thereconstructed block may be generated by combining the residual valuegenerated by the inverse quantization unit 140 and the inverse transformunit 145 with the prediction unit predicted through the motionestimation unit, the motion compensation unit, and the intra predictionunit included in the prediction units 120 and 125.

The filter unit 150 may include at least one of a deblocking filter, anoffset correction unit, and an adaptive loop filter (ALF).

The deblocking filter may remove block distortion caused by boundarybetween blocks in the reconstructed picture. In order to determinewhether to perform deblocking, it may be determined whether to apply thedeblocking filter to the current block based on the pixels included inseveral columns or rows included in the block. When applying adeblocking filter to a block, a strong filter or a weak filter may beapplied according to the required deblocking filtering strength. Inaddition, in applying the deblocking filter, horizontal filtering andvertical filtering may be processed in parallel when performing verticalfiltering and horizontal filtering.

The offset correction unit may correct an offset from the original imagein units of pixels for the deblocking-filtered image. In order toperform offset correction for a specific picture, after classifying thepixels included in the image into a certain number of regions anddetermining the region to which the offset is applied, a method ofapplying the offset to the region offset or a method of applying theoffset by considering edge information of each pixel may be used.

ALF (Adaptive Loop Filtering) may be performed based on a value obtainedby comparing a filtered reconstructed image with an original image.After classifying the pixels included in the image into a predeterminedgroup, one filter to be applied to the group may be determined toperform filtering differently for each group. Information related towhether to apply ALF may be transmitted for each coding unit (CU) of aluma signal, and a shape and filter coefficient of an ALF filter to beapplied may vary according to each block. In addition, the same type(fixed type) ALF filter may be applied regardless of the characteristicsof the block to be applied.

The memory 155 may store the reconstructed block or picture output fromthe filter unit 150, and the stored reconstructed block or picture maybe provided to the prediction units 120 and 125 when performing interprediction.

FIG. 2 is a block diagram showing an image decoding apparatus accordingto an embodiment of the present invention.

Referring to FIG. 2, the image decoder 200 may include an entropydecoding unit 210, a rearrangement unit 215, an inverse quantizationunit 220, an inverse transform unit 225, a prediction unit 230, 235, anda filter unit 240, a memory 245.

When an image bitstream is input from the image encoder, the inputbitstream may be decoded in a procedure opposite to that of the imageencoder.

The entropy decoding unit 210 may perform entropy-decoding in aprocedure opposite to that performed by entropy-encoding in the entropyencoding unit of the image encoder. For example, various methodscorresponding to the method performed in the image encoder such asExponential Golomb (CAVLC), Context-Adaptive Variable Length Coding(CAVLC), and Context-Adaptive Binary Arithmetic Coding (CABAC) may beapplied.

The entropy decoding unit 210 may decode information related to intraprediction and inter prediction performed by the encoder.

The rearrangement unit 215 may perform rearrangement of the bitstreamentropy-decoded by the entropy decoding unit 210 based on arearrangement method of the encoding unit. The coefficients of a1-dimensional vector form may be rearranged into coefficients of a2-dimensional block form again. The rearrangement unit 215 may performreordering through a method of receiving information related tocoefficient scanning performed by the encoder and performing reversescanning based on the scanning order performed by the correspondingencoder.

The inverse quantization unit 220 may perform inverse quantization basedon the quantization parameter provided by the encoder and thecoefficients of the rearranged block.

The inverse transform unit 225 may perform inverse transform, that is,inverse DCT, inverse DST, and inverse KLT, corresponding to transformsperformed by the transform unit, that is, DCT, DST, and KLT for thequantization results performed by the image encoder. The inversetransform may be performed based on the transmission unit determined bythe image encoder. In the inverse transform unit 225 of the imagedecoder, a transform method (for example, DCT, DST, KLT) may beselectively performed according to a plurality of information such as aprediction method, a size of a current block, and a predictiondirection.

The prediction units 230 and 235 may generate a prediction block basedon prediction block generation related information provided by theentropy decoding unit 210 and previously decoded block or pictureinformation provided by the memory 245.

As described above, when a size of the prediction unit and a size of thetransform unit are the same in performing intra prediction in the samemanner as in the image encoder, the intra prediction of the predictionunit may be performed based on pixels located on the left, the top-leftand the top of the prediction unit. However, when the size of theprediction unit and the size of the transform unit are different inperforming intra prediction, the intra prediction may be performed usinga reference pixel based on the transform unit. In addition, the intraprediction using N×N division may be used only for the minimum codingunit.

The prediction units 230 and 235 may include a prediction unitdetermination unit, an inter prediction unit, and an intra predictionunit. The prediction unit determination unit may receive variousinformation from the entropy decoding unit 210 such as prediction unitinformation, prediction mode information of an intra prediction method,and motion prediction related information of an inter prediction method,classify the prediction unit from the current coding unit, and determinewhether the prediction unit performs inter prediction or intraprediction. The inter prediction unit 230 may perform inter predictionfor a current prediction unit based on information included in at leastone of a previous picture or a subsequent picture of the current pictureincluding the current prediction unit, by using information required forinter prediction of the current prediction unit provided by the imageencoder. Alternatively, inter prediction may be performed based oninformation on a partial region previously-reconstructed in the currentpicture including the current prediction unit.

In order to perform inter prediction, a motion prediction method of aprediction unit included in a coding unit may be determined among a skipmode, a merge mode, an AMVP mode, and an intra block copy mode.

The intra prediction unit 235 may generate a prediction block based onpixel information in the current picture. When the prediction unit is aprediction unit that has performed intra prediction, intra predictionmay be performed based on intra prediction mode information of aprediction unit provided by an image encoder. The intra prediction unit235 may include an adaptive intra smoothing (AIS) filter, a referencepixel interpolation unit, and a DC filter. The AIS filter is a part thatperforms filtering on the reference pixel of the current block and maybe applied by determining whether to apply the filter according to theprediction mode of the current prediction unit. AIS filtering may beperformed on a reference pixel of a current block by using predictionmode and AIS filter information of a prediction unit provided by animage encoder. When the prediction mode of the current block is a modethat does not perform AIS filtering, the AIS filter may not be applied.

When the prediction mode of the prediction unit is the prediction unitthat performs intra prediction based on the pixel value obtained byinterpolating the reference pixel, the reference pixel interpolationunit may interpolate the reference pixel to generate a reference pixelof an integer pixel or less. When the prediction mode of the currentprediction unit is a prediction mode in which a prediction block isgenerated without interpolating a reference pixel, the reference pixelmay not be interpolated. The DC filter may generate a prediction blockthrough filtering when the prediction mode of the current block is theDC mode.

The reconstructed block or picture may be provided to the filter unit240. The filter unit 240 may include a deblocking filter, an offsetcorrection unit, and an ALF.

Information about whether a deblocking filter is applied to acorresponding block or picture and information about whether a strongfilter is applied or a weak filter is applied in applying the deblockingfilter may be provided from a video encoder. In the deblocking filter ofthe video decoder, information related to the deblocking filter providedby the video encoder may be provided, and the video decoder may performdeblocking filtering on the corresponding block.

The offset correction unit may perform offset correction on thereconstructed image based on a type of offset correction and offsetvalue information applied to the image during encoding.

ALF may be applied to a coding unit based on information on whether toapply ALF, ALF coefficient information, and the like, provided by anencoder. This ALF information may be provided from a specific parameterset.

The memory 245 may store the reconstructed picture or block so that itcan be used as a reference picture or a reference block, and may alsoprovide the reconstructed picture to an output unit.

As described above, in an embodiment of the present invention, forconvenience of description, a coding unit is used as a coding unit, butit may be a unit that performs not only encoding but also decoding.

FIGS. 3 to 6 illustrate a method of dividing one picture into one ormore division units according to the present disclosure.

One picture may be divided into division units pre-defined in theencoding/decoding apparatus. Here, the pre-defined division unit mayinclude at least one of a sub picture, a slice, a tile, or a brick.

Specifically, one picture may be divided into one or more tile rows orone or more tile columns. In this case, the tile may mean a group ofblocks covering a predetermined rectangular area in the picture. Here,the block may mean a coding tree block (largest coding block). Codingtree blocks belonging to one tile may be scanned based on a raster scanorder.

Tiles may be divided into one or more bricks. Bricks may be composed ofblocks in rows or columns of tiles. That is, the division into bricksmay be performed only in either a vertical direction or a horizontaldirection. However, the present invention is not limited thereto, andone tile may be divided into a plurality of bricks based on one or morevertical lines and one or more horizontal lines. Brick may be asub-concept of a tile, and may be called a sub-tile.

0One slice may include one or more tiles. Alternatively, one slice mayinclude one or more bricks. Alternatively, one slice may be defined asone or more coding tree block rows (CTU rows) in a tile. Alternatively,one slice may be defined as one or more coding tree block columns (CTUcolumns) within a tile. That is, one tile may be set as one slice, andone tile may be composed of a plurality of slices. When one tile isdivided into a plurality of slices, the division may be limited to beperformed only in the horizontal direction. In this case, the verticalboundary of the slice may coincide with the vertical boundary of thetile, but the horizontal boundary of the slice is not same with thehorizontal boundary of the tile, but rather may coincide with thehorizontal boundary of the coding tree block in the tile. On the otherhand, the division may be limited to be performed only in the verticaldirection.

The encoding/decoding apparatus may define a plurality of splittingmodes for a slice. For example, the segmentation mode may include atleast one of a raster-scan mode and a rectangular slice mode. In thecase of the raster-scan mode, one slice may include a series of tiles(or blocks, bricks) according to the raster scan order. In the case ofthe rectangular slice mode, one slice may include a plurality of tilesforming a rectangular area, or may include one or more rows (or columns)of coding tree blocks in one tile forming a rectangular area.

The information on the split mode of the slice may be explicitly encodedby an encoding device and signaled to a decoding device, or may beimplicitly determined by an encoding/decoding device. For example, aflag indicating whether it is a rectangular slice mode may be signaled.When the flag is a first value, a raster-scan mode may be used, and whenthe flag is a second value, a rectangular slice mode may be used. Theflag may be signaled at at least one level of a video parameter set(VPS), a sequence parameter set (SPS), a picture parameter set (PPS), ora picture header (PH).

As described above, one slice may be configured in a rectangular unitincluding one or more blocks, bricks, or tiles, and the location andsize information of the slice may be expressed in the correspondingunit.

The sub picture may include one or more slices. Here, the slice maycover a rectangular area within one picture. That is, the boundary ofthe sub picture may always coincide with the slice boundary, and thevertical boundary of the sub picture may always coincide with thevertical boundary of the tile. All coding tree blocks (CTUs) belongingto one sub picture may belong to the same tile. All coding tree blocksbelonging to one tile may belong to the same sub picture.

In the present invention, a picture may be composed of one or more subpictures, a sub picture may be composed of one or more slices, tiles, orbricks, a slice may be composed of one or more tiles or bricks, and atile may be composed of one or more bricks. It is described on theassumption that it can be configured, but is not limited thereto. Thatis, as described above, one tile may be composed of one or more slices.

The division unit may be composed of an integer number of blocks, but isnot limited thereto and may be composed of a decimal number instead ofan integer number. That is, when it is not composed of an integer numberof blocks, at least one division unit may be composed of sub-blocks.FIG. 3 illustrates an example of slice division according to araster-scan mode. Referring to FIG. 3, it may be seen that it iscomposed of 18×12 blocks (each column and row), 12 tiles, and 3 slices.Here, the slice may be regarded as an example of a group of blocks ortiles according to a predetermined scan (raster scan).

FIG. 4 illustrates an example of slice division according to arectangular slice mode. Referring to FIG. 4, it may be seen that it iscomposed of 18×12 blocks, 24 tiles, and 9 slices. Here, 24 tiles may berepresented by 6 tile columns and 4 tile rows.

FIG. 5 illustrates an example in which one picture is divided into aplurality of tiles and rectangular slices. Referring to FIG. 5, onepicture may be composed of 11 bricks, 4 tiles (2 tile columns and 2 tilerows), and 4 slices.

FIG. 6 illustrates an example of dividing one picture into a pluralityof sub pictures. Referring to FIG. 6, one picture may consist of 18tiles. Here, 4×4 blocks on the left (i.e., 16 CTUs) may constitute onetile, and 2×4 blocks on the right (i.e., 8 CTUs) may constitute onetile. Also, like a tile on the left, one tile may be one sub picture (orslice), and like a tile on the right, one tile may be composed of twosub pictures (or slices).

Table 1 shows examples of division or configuration information on a subpicture according to the present disclosure, and encoding controlinformation (e.g., information on whether to apply an in-loop filter toa boundary, etc.).

TABLE 1 subpics_present_flag if( subpics_present_flag ) { max_subpics_minus1  subpic_grid_col_width_minus1 subpic_grid_row_height_minus1  for( i = 0; i < NumSubPicGridRows: i++ )  for( j = 0; j < NumSubPicGridCols: j++ )    subpic_grid_idx[ i ][ j ]  for( i = 0; i <= NumSubPics; i++ ) {    subpic_treated_as_pic_flag[ i]   loop_filter_across_subpic_enabled_flag[ i ]  } }

In Table 1, subpics_present_flag means whether a sub picture issupported, and when the sub picture is supported (when 1), informationon the number of sub pictures (max_subpic_minus1) or information widthor height (subpic_grid_col_width_minus1, subpic_grid_row_height_minus1)of the sub picture may be generated. At this time, length informationsuch as width and height may be expressed as it is (e.g., in units of 1pixel) or may be expressed as multiple, exponent, etc. of apredetermined unit/constant (e.g., integers such as 2, 4, 8, 16, 32, 64,128, etc., or maximum encoding unit, minimum coding unit, maximumtransform unit, minimum transform unit, etc.).

Here, based on the width and height of the picture, and the width andheight (equal length) of each sub picture, how many sub pictures existin the picture in units of columns and rows (NumSubPicGridRows,NumSubPicGridCols) may be derived. In addition, how many sub picturesare in the picture (NumSubPics) may be derived.

The above example assumes that the width or height of each sub pictureis uniform, but it may also be possible when at least one of the widthor height of each sub picture is not uniform. Therefore, a flagspecifying whether all sub pictures constituting one picture have thesame size may be used.

When all sub pictures do not have the same size according to the flag,position information of each sub picture and size information of eachsub picture may be encoded/decoded. On the other hand, when all subpictures have the same size according to the flag, size information maybe encoded/decoded only for the first sub picture.

Information on how many sub pictures exist in a column or row unit in apicture may be generated, and information on the width or height of eachsub picture may be individually generated.

After sub pictures are partitioned in units of columns and rows, anindex of each sub picture may be allocated. In the implicit case,indexes may be allocated based on a predetermined scan order (rasterscan, etc.) (e.g., 0, 1, 2, etc. indexes are allocated to the left→rightof the first sub picture row), but explicitly index information each subpicture (subpic_grid_idx) may be generated.

In the case of a sub picture, it may be determined whether to set as apicture (subpic_treated_as_pic_flag) during a decoding process excludingan in-loop filtering operation. This may operate in relation to whethera sub picture can be considered as one independent picture (when theflag is 1) in processing such as a reference picture list for interprediction.

It is possible to determine whether to set all sub pictures within apicture as pictures (one flag is applied in common), or it is possibleto determine whether to individually set them as pictures (a pluralityof flags are applied individually). Here, a plurality of individualflags may be encoded/decoded for each sub picture only when arestriction that all sub pictures are treated as pictures according toone flag applied in common is not imposed.

In addition, loop_fiter_across_subpic_enabled_flag[i] may determinewhether to perform the filtering operation across the boundary of thei-th sub picture. If it is 1, it is performed across, if it is 0, it isnot performed.

Here, the part related to loop_filter_across_subpic_enabled_flag may beapplied in the same/similar manner not only in the case of the syntaxelement but also in the example of processing the boundary of variousdivision units described later.

The area located at the boundary of the picture cannot be referred orfiltered because there is no data outside the picture. That is, the arealocated inside a picture may be referred to or may be filtered.

On the other hand, even inside a picture, it can be divided into inunits of such as sub pictures, slices, tiles, bricks, etc., and in thecase of some division units, whether to refer to regions adjacent toboth sides of the boundary of different division units, whether to applyfiltering, and the like may be adaptively determined.

Here, whether to cross-reference both regions adjacent to the boundarymay be determined by explicit information or may be implicitlydetermined.

Here, whether to perform boundary filtering (e.g., an in-loop filter oran inside loop filter, De-blocking filter, SAO, ALF, etc.) may bedetermined by explicit information or implicitly determined.

For example, in the case of some units A, cross-reference forencoding/decoding between division units may be possible, and filteringmay be performed on a boundary of the division unit. For example, in thecase of some units B, cross-referencing for encoding/decoding betweendivision units may be prohibited, and filtering cannot be performed onthe boundary of division units. For example, in the case of some unitsC, cross-reference for encoding/decoding between division units may beprohibited, and filtering may be performed on a boundary of the divisionunit. For example, in the case of some units D, cross-reference forencoding/decoding between division units may be possible, and whether toperform filtering at a boundary of the division unit may be determinedbased on predetermined flag information. For example, in the case ofsome units (E), whether to cross-reference for encoding/decoding betweendivision units may be determined based on predetermined flaginformation, and whether to perform filtering on the boundary ofdivision units may be determined based on predetermined flaginformation.

The A to E division units may correspond to at least one of theabove-described sub picture, slice, tile, or brick. For example, all ofthe division units A to E may be sub pictures, tiles, or slices.Alternatively, some of the A to E division units may be sub pictures,and the rest may be slices or tiles. Alternatively, some of the A to Edivision units may be slices and the rest may be tiles.

FIG. 7 illustrates a method of performing filtering based on apredetermined flag according to the present disclosure.

Referring to FIG. 7, one picture may be divided into a plurality ofdivision units (S700).

The division unit may be at least one of the aforementioned sub picture,slice, tile, and brick. For example, one picture may be divided into aplurality of sub pictures. Of course, one picture may be additionallydivided into a plurality of slices and/or tiles in addition to the subpicture. Since the division unit is the same as described above, adetailed description will be omitted here.

Referring to FIG. 7, it may be determined whether to perform filteringon a boundary of a division unit based on a predetermined flag (S710).

For convenience of explanation, it is assumed that the division unit inthe present disclosure is a sub picture. However, the present disclosureis not limited thereto, and the present disclosure may be appliedsame/similarly to the boundary of a slice, tile, or brick. In addition,filtering in the present disclosure may mean in-loop filtering appliedto a reconstructed picture, and a filter for the in-loop filtering mayinclude at least one of a deblocking filter (DF), a sample adaptiveoffset (SAO), or an adaptive loop filter (ALF).

The division unit may be supported for purposes such as parallelprocessing and partial decoding.

Therefore, when the encoding/decoding of each division unit is finished,whether to perform filtering at a boundary between division units orfiltering at a boundary of division unit (e.g., in-loop filter) may bedetermined implicitly or explicitly.

Specifically, a flag indicating whether to perform filtering on theboundary of the division unit may be used. Here, the flag may beimplicitly determined in a higher unit including a plurality of divisionunits, or may be explicitly encoded/decoded. The higher unit may mean apicture or may mean a unit composed of only some of the division unitsconstituting the picture. Alternatively, the flag may be implicitlydetermined for each division unit, or may be explicitly encoded/decoded.Alternatively, the flag may be implicitly determined for each boundaryof the division unit, or may be explicitly encoded/decoded. This will bedescribed in detail with reference to FIGS. 8 to 15.

Referring to FIG. 7, filtering may be performed on a boundary of adivision unit in response to the determination in S710 (S720).

Specifically, at least one of a deblocking filter, a sample adaptiveoffset, or an adaptive loop filter may be applied to the boundary of thedivision unit. The above-described filters may be sequentially appliedaccording to a predetermined priority. For example, after the deblockingfilter is applied, a sample adaptive offset may be applied. After thesample adaptive offset is applied, the adaptive loop filter may beapplied. A method of applying the deblocking filter to the boundary ofthe division unit will be described in detail with reference to FIG. 16.

FIGS. 8 to 15 illustrate a method of determining whether filtering isperformed on a boundary of a division unit based on one or more flagsaccording to the present disclosure.

A flag for determining whether to perform filtering at the boundary ofthe division unit may be supported for each type of division unit. Forexample, at least one of a flag indicating whether filtering isperformed on the boundary of a sub picture(loop_filter_across_subpic_enabled_flag, hereinafter referred to as afirst flag), a flag indicating whether filtering is performed on theboundary of a slice (loop_filter_across_slices_enabled_flag, hereinafterreferred to as a second flag), a flag indicating whether filtering isperformed on the boundary of the tile(loop_filter_across_tiles_enabled_flag, hereinafter referred to as athird flag), or a flag indicating whether filtering is performed on theboundary of the brick (loop_filter_across_bricks_enabled_flag,hereinafter referred to as a fourth flag) may be supported.

Alternatively, the encoding/decoding apparatus may support only some ofthe aforementioned flags. For example, {the first flag, the second flag,the third flag}, {the first flag, the second flag, the fourth flag},{the second flag, the third flag, the fourth flag}, {the first flag, thesecond flag}, {the first flag, the third flag}, {the first flag, thefourth flag}, {the second flag, the third flag}, {the second flag, thefourth flag}, {the third flag, the fourth flag}, {the first flag}, {thesecond flag}, {the third flag}, or {the fourth flag} may be supported.

Also, all of the first to fourth flags described above may be explicitlysupported, or, some of the first to fourth flags may be explicitlysupported, and the others may be implicitly supported. For example, oneof the first to fourth flags may be explicitly supported, and the othermay be implicitly determined based on the explicitly supported flag.

In an embodiment to be described later, for convenience of description,the first to fourth flags will be referred to asloop_filter_across_enabled_flag. In addition, it is assumed that theflag is supported when the corresponding division unit is supported.

FIG. 8 illustrates an example in which a flag(loop_filter_across_enabled_flag) is supported for one picture includinga plurality of division units.

Referring to Table 2, when the flag (loop_filter_across_enabled_flag) isa first value, filtering is restricted not to be performed at theboundary of a division unit in a picture, and when the flag is a secondvalue, the restriction is not imposed on the boundary of the divisionunit. That is, when the flag is the second value, filtering on theboundary of the division unit within the picture may be performed or maynot be performed.

In other words, when the flag is the first value, it may mean that theboundary of the division unit is treated the same as the boundary of thepicture, and when the flag is the second value, it may mean that thelimitation that the boundary of the division unit is treated the same asthe boundary of the picture is not imposed.

TABLE 2 loop_filter_across_enabled_flag

In FIG. 8, A to F denote a division unit, the presence of an arrow asshown in the left drawing may mean that filtering between the boundariesof the division unit can be performed, and as shown in the rightdrawing, the absence of an arrow may mean that filtering between theboundaries of is restricted not to be performed. For convenience ofexplanation, it is assumed that each division unit has a rectangularshape.

The above embodiment refers to a case where it is determined whether tocollectively perform filtering on a division unit in a picture,regardless of a vertical relationship between division units.

FIG. 9 illustrates an example in which the flag is individuallysupported in a higher unit of a division unit. That is, based on theflag of the higher unit, it may be determined whether to performfiltering on the boundary of the division unit existing in the higherunit.

Referring to Table 3, a flag (loop_filter_across_enabled_flag) may beencoded/decoded for each higher unit. loop_filter_across_enabled_flag[i]may indicate whether filtering is performed on the boundary of thedivision unit within the i-th higher unit. For example, when the flag isa first value, filtering is restricted not to be performed on theboundary of the division unit within the higher unit, and when the flagis a second value, the restriction is not imposed on the boundary of thedivision unit within the higher unit. That is, when the flag is thesecond value, filtering may or may not be performed on the boundary ofthe division unit within the higher unit.

Alternatively, when the flag is a first value, filtering may not beperformed on the boundary of the division unit within the higher unit,and when the flag is the second value, filtering may be performed on theboundary of the division unit within the higher unit. This may mean thatfiltering may be performed on at least one boundary of the divisionunits within the higher unit, or filtering may be performed on theboundary of all division units belonging to the higher unit.

In this embodiment, one picture may be composed of a plurality of higherunits, and each higher unit may be composed of a plurality of divisionunits. For example, when the higher unit is a sub picture, the divisionunit may be a tile, a slice, or a brick. Alternatively, the higher unitmay be defined as a group of sub pictures having a smaller size than apicture, and in this case, the division unit may be a sub picture, tile,slice, or brick.

TABLE 3 for( i = 0; i < Num_Units: i ++ ) loop_filter_across_enabled_flag [i]

The above embodiment refers to a case in which a flag for determiningwhether to perform filtering on a boundary of a division unit issupported in a higher unit defined as a group of a predetermineddivision unit.

Referring to FIG. 9, one picture may be composed of two higher units(i.e., a first higher unit composed of A to C and a second higher unitcomposed of D to F).

In the first higher unit, it is the case in which the flag indicatingwhether to perform filtering is 0, and in the second higher unit, it isthe case in which the flag indicating whether to perform filtering is 1.The boundary between the first higher unit and the division unitbelonging to the second higher unit may or may not be filtered by a flagthat determines whether to perform filtering of the higher unit.

FIG. 10 illustrates a case in which a flag(loop_filter_across_enabled_flag) is supported for each division unitconstituting one picture.

This embodiment, unlike the embodiment of FIG. 9, is an example ofdetermining whether filtering is performed on the boundary of eachdivision unit. Thus, even if the syntax elements are the same as inTable 2, their meanings may be different.

Referring to Table 4, a flag (loop_filter_across_enabled_flag) may beencoded/decoded for each division unit.loop_filter_across_enabled_flag[i] may indicate whether filtering isperformed on the boundary of the i-th division unit in the picture.

For example, when the flag is a first value, filtering is restricted sothat no filtering is performed on the boundary of the i-th division unitin the picture, and when the flag is a second value, filtering may beperformed on the boundary of the i-th division unit in the picture. Thatis, when the flag is the second value, filtering may or may not beperformed on the boundary of the division unit within the picture.

Meanwhile, a flag for each division unit(loop_filter_across_enabled_flag[i]) may be selectively encoded/decodedbased on a flag (loop_filter_across_enabled_flag) for one picture. Theflag for one picture is the same as described in the embodiment of FIG.8, and a detailed description will be omitted.

For example, when filtering is restricted so that no filtering isperformed on a boundary of a division unit within a picture according toa flag for one picture, the flag for each division unit is notencoded/decoded. According to the flag for the one picture, the flag foreach of the division units may be encoded/decoded only when therestriction is not imposed on the boundary of the division unit.

Meanwhile, the flag for one picture and the flag for each of thedivision units may be encoded/decoded at the same level. Here, the samelevel may be any one of a video parameter set, a sequence parameter set,or a picture parameter set.

TABLE 4 for( i = 0; i < Num_Units: i ++ ) loop_filter_across_enabled_flag [i]

Referring to FIG. 10, based on a flag for each division unit, filteringmay be performed on a boundary of a corresponding division unit as shownin the left drawing, and filtering may not be performed on the boundaryof a corresponding division unit as shown in the right drawing.

FIG. 11 illustrates a method of determining whether to perform filteringaccording to a boundary position of a division unit.

This embodiment relates to the embodiment of FIG. 9 or the embodiment ofFIG. 10 described above. When it is determined that filtering isperformed on the boundary of each division unit, predetermined directioninformation to which filtering is applied may be encoded/decoded.

Referring to Table 5, information on whether filtering is performed onboundary at least one of left, right, top, or bottom directions may beencoded/decoded. When a boundary of a specific direction among theboundaries of a division unit coincides with a boundary of a picture,encoding/decoding of information about the corresponding direction maybe omitted.

In this embodiment, a flag for determining whether to perform filteringon a boundary in a specific direction is used, and a flag fordetermining whether to perform filtering in unit of a bundle in somedirections (e.g., left+right, top+bottom, left+right+top, etc.) may beused.

TABLE 5 for( i = 0; i < Num_Units; i ++ ) { loop_filter_across_enabled_flag [i]  if(loop_filter_across_enabled_flag [i] )  {  loop_filter_left_boundary_flag[i]   loop_filter_right_boundary_flag[i]  loop_filter_top_boundary_flag[i]   loop_filter_bottom_boundary_flag[i] } }

Referring to FIG. 11, the left drawing shows a case in which filteringis performed on the boundary in the omnidirectional direction of thedivision unit (X). The central figure shows a case in which filtering isperformed only on the left and right boundary of the division unit (x),and the right figure shows a case where filtering is not performed onthe boundary of the division unit (X).

FIGS. 12 and 13 illustrate a method of determining whether to performfiltering on a boundary of a current division unit based on a flag for aneighboring division unit.

This embodiment may be related to the embodiment of FIG. 10 describedabove. That is, whether to perform filtering on the boundary of thecurrent division unit may be determined by further considering a flagfor the neighboring division unit in addition to the flag for thecurrent division unit. When the boundary of the current division unit isa vertical boundary, the neighboring division unit may mean a divisionunit adjacent to the left or right of the current division unit. Whenthe boundary of the current division unit is a horizontal boundary, theneighboring division unit may mean a division unit adjacent to the topor bottom of the current division unit.

Referring to FIG. 12, it is assumed that filtering is performed on theboundary in the division units of X and Y. Since it is determined thatfiltering is performed on the boundary where X and Y contact each other,filtering may be performed on the right boundary of the division unit X(i.e., the left boundary of the division unit Y).

Referring to FIG. 13, this is a case where it is determined thatfiltering is not performed for only one of the division units X and Y.That is, since the flag (loop_filter_across_enabled_flag) for thedivision unit X is 1, filtering may be performed on the boundary of thedivision unit X. On the other hand, since the flag(loop_filter_across_enabled_flag) for the division unit Y is 0,filtering is not performed on the boundary of the division unit Y.

One of the reasons for filtering between division units is to reducedeterioration between division units caused by individualencoding/decoding between division units.

Thus, as in the above embodiment, filtering may be performed on theboundary of one of the adjacent division regions and filtering may notbe performed on the boundary of the other division region.

Alternatively, if applying filtering only to the boundary of one of thedivision regions may not be effective in removing image qualitydeterioration, it may be determined not to perform filtering on theboundary.

For example, when values of the flag for the division unit X and theflag for the division unit Y are different from each other, filteringmay be performed on the boundary between the division units X and Y, orit may be determined that filtering is allowed.

For example, it is assumed that the left boundary of the current blockcoincides with the left boundary of the current division unit to whichthe current block belongs. In this case, even if the flag for thecurrent division unit is 0, if the flag for the left division unitadjacent to the current division unit is 1, filtering may be performedon the left boundary of the current block.

Similarly, it is assumed that the top boundary of the current blockcoincides with the top boundary of the current division unit to whichthe current block belongs. In this case, even if the flag for thecurrent division unit is 0, if the flag for the top division unitadjacent to the current division unit is 1, filtering may be performedon the top boundary of the current block.

Alternatively, when the values of the flag for the division unit X andthe flag for the division unit Y are different from each other, it maybe determined that filtering is not performed or filtering is notallowed at the boundary between the division units X and Y.

For example, it is assumed that the left boundary of the current blockcoincides with the left boundary of the current division unit to whichthe current block belongs. In this case, even if the flag for thecurrent division unit is 1, if the flag for the left division unitadjacent to the current division unit is 0, filtering may not beperformed on the left boundary of the current block.

Similarly, it is assumed that the top boundary of the current blockcoincides with the top boundary of the current division unit to whichthe current block belongs. In this case, even if the flag for thecurrent division unit is 1, if the flag for the top division unitadjacent to the current division unit is 0, filtering may not beperformed on the top boundary of the current block.

FIG. 14 illustrates a case in which information indicating whether toperform filtering is generated for each division unit boundary.

Referring to FIG. 14, whether to perform filtering for each divisionboundary line that divides or partitions division units A to F may beperformed. If filtering is performed on the C0 boundary, filtering maybe performed on the A and B boundaries, and on the D and E boundary,otherwise, filtering may not be performed on the boundary.

The number or index of the C0, C1, R0, etc. may be derived by thedivision information or the partition information of the division unit.Alternatively, information for explicitly allocating information on thedivision unit boundary and an index may be generated. As shown in thesyntax elements of Table 6 below, information for determining whether toperform filtering may be generated at each division unit boundary (inthis example, each column or row) based on Num_units_rows andNum_unit_cols.

TABLE 6 for( i = 0; i < Num_Unit_Rows; i ++ ) {  loop_filter_across_row[i] } for( i = 0; i < Num_Unit_Cols; i ++ ) {  loop_filter_across_col[i] }

FIG. 15 illustrates another example in which information indicatingwhether to perform filtering is generated for each division unitboundary.

Referring to FIG. 15, whether to perform filtering for each divisionboundary line that divides or partitions division units A to F may beperformed. The difference from the embodiment of FIG. 14 is that relatedinformation is generated for each divisional unit boundary, not for onecolumn or row across the picture.

If filtering is performed on the L0 boundary, filtering may be performedon the A and B boundary, otherwise, filtering may not be performed onthe boundary.

The number or index of the C0, C1, R0, etc. may be derived by thedivision information or the division information of the division unit.Alternatively, information for explicitly allocating information on thedivision unit boundary and an index may be generated. As in the syntaxelement of Table 7, information for determining whether to performfiltering at each division unit boundary may be generated based onNum_unit_boundary.

TABLE 7 for( i = 0; i < Num_Unit_boundary; i ++ ) {  loop_filter_across[i] }

FIG. 16 illustrates a method of applying a deblocking filter accordingto the present disclosure.

Referring to FIG. 16, a block boundary for deblocking filtering(hereinafter, referred to as an edge) among block boundaries of areconstructed picture may be specified (S1600).

The reconstructed picture may be partitioned into a predetermined N×Msample grid. The N×M sample grid may mean a unit in which deblockingfiltering is performed. Here, N and M may be 4, 8, 16 or more integers.Each pixel grid may be defined for each component type. For example,when the component type is a luminance component, N and M may be set to4, and when the component type is a chrominance difference component, Nand M may be set to 8. Regardless of the component type, a fixed-sizeN×M pixel grid may be used.

The edge is a block boundary positioned on an N×M sample grid, and mayinclude at least one of a boundary of a transform block, a boundary of aprediction block, or a boundary of a sub-block.

Referring to FIG. 16, a decision value for the specified edge may bederived (S1610).

In this embodiment, it is assumed that the edge type is a vertical edge,and a 4×4 sample grid is applied. Based on the edge, the left block andthe right block will be referred to as P blocks and Q blocks,respectively. The P block and the Q block are pre-reconstructed blocks,the Q block refers to a region in which deblocking filtering iscurrently performed, and the P block may refer to a block spatiallyadjacent to the Q block.

First, the decision value may be derived using a variable dSam forinducing the decision value. The variable dSam may be derived for atleast one of a first pixel line or a fourth pixel line of the P blockand the Q block. Hereinafter, dSam for the first pixel line (row) of theP block and Q block is referred to as dSam0, and dSam for the fourthpixel line (row) is referred to as dSam3.

When at least one of the following conditions is satisfied, dSam0 may beset to 1, otherwise, dSam0 may be set to 0.

TABLE 8 condition 1 dqp < first threshold 2 (sp + sq) < second threshold3 spq < third threshold

In Table 8, dpq may be derived based on at least one of a first pixelvalue linearity 1 of the first pixel line of the P block or a secondpixel value linearity d2 of the first pixel line of the Q block. Here,the first pixel value linearity d1 may be derived using i pixels pbelonging to the first pixel line of the P block. The i may be 3, 4, 5,6, 7 or more. The i pixels p may be continuous pixels adjacent to eachother, or may be non-contiguous pixels separated by a predeterminedinterval. In this case, the pixel p may be i pixels closest to the edgeamong the pixels of the first pixel line. Similarly, the second pixelvalue linearity d2 and be derived using j pixels q belonging to thefirst pixel line of the Q block. The j may be 3, 4, 5, 6, 7 or more. Thej is set to the same value as the i, but is not limited thereto, and maybe a value different from the i. The j pixels q may be contiguous pixelsadjacent to each other, or may be non-contiguous pixels separated by apredetermined interval. In this case, the pixel q may be j pixelsclosest to the edge among the pixels of the first pixel line.

For example, when three pixels p and three pixels q are used, the firstpixel value linearity d1 and the second pixel value linearity d2 may bederived as in Equation 1 below.d1=Abs(p2,0−2*p1,0+p0,0)d2=Abs(q2,0−2*q1,0+q0,0)  [Equation 1]

Alternatively, when six pixels p and six pixels q are used, the firstpixel value linearity d1 and the second pixel value linearity d2 may bederived as in Equation 2 below.d1=(Abs(p2,0−2*p1,0+p0,0)+Abs(p5,0−2*p4,0+p3,0)+1)>>1d2=(Abs(q2,0−2*q1,0+q0,0)+Abs(q5,0−2*q4,0+q3,0)+1)>>1  [Equation 2]

In Table 8, sp may denote a first pixel value gradient v1 of a firstpixel line of the block P, and sq may denote a second pixel valuegradient v2 of a first pixel line of the Q block. Here, the first pixelvalue gradient v1 may be derived using m pixels p belonging to the firstpixel line of the P block. The m may be 2, 3, 4, 5, 6, 7 or more. The mpixels p may be contiguous pixels adjacent to each other, or may benon-contiguous pixels separated by a predetermined interval.Alternatively, some of the m pixels p may be contiguous pixels adjacentto each other, and the others may be non-contiguous pixels separated bya predetermined interval. Similarly, the second pixel value gradient v2may be derived using n pixels q belonging to the first pixel line of theQ block. The n may be 2, 3, 4, 5, 6, 7 or more. The n is set to the samevalue as m, but is not limited thereto, and may be a value differentfrom m. The n pixels q may be contiguous pixels adjacent to each other,or may be non-contiguous pixels separated by a predetermined interval.Alternatively, some of the n pixels q may be contiguous pixels adjacentto each other, and the others may be non-contiguous pixels separated bya predetermined interval.

For example, when two pixels p and two pixels q are used, a first pixelvalue gradient v1 and a second pixel value gradient v2 may be derived asin Equation 3 below.v1=Abs(p3,0−p0,0)v2=Abs(q0,0−q3,0)  [Equation 3]

Alternatively, when six pixels p and six pixels q are used, the firstpixel value gradient v1 and the second pixel value gradient v2 may bederived as in Equation 4 below.v1=Abs(p3,0−p0,0)+Abs(p7,0−p6,0−p5,0+p4,0)v2=Abs(q0,0×q3,0)+Abs(q4,0−q5,0−q6,0+q7,0)  [Equation 4]

The spq in Table 8 may be derived from the difference between the pixelp0,0 and the pixel q0,0 adjacent to the edge.

The first and second thresholds of Table 8 may be derived based on apredetermined parameter QP. Here, the QP may be determined using atleast one of a first quantization parameter of the P block, a secondquantization parameter of the Q block, or an offset for inducing QP. Theoffset may be a value encoded and signaled by an encoding device. Forexample, QP may be derived by adding the offset to the average value ofthe first and second quantization parameters. The third threshold ofTable 8 may be derived based on the above-described quantizationparameter (QP) and block boundary strength (BS). Here, the BS may bevariably determined in consideration of a prediction mode of a P/Qblock, an inter prediction mode, a presence or absence of a non-zerotransform coefficient, a difference in motion vectors, etc.

For example, when at least one prediction mode of the P block and the Qblock is an intra mode, the BS may be set to 2. When at least one of theP blocks or the Q blocks is encoded in the combined prediction mode, theBS may be set to 2. When at least one of the P block or Q block includesa non-zero transform coefficient, the BS may be set to 1. When the Pblock is coded in an inter prediction mode different from the Q block(e.g., when the P block is coded in the current picture reference modeand the Q block is coded in the merge mode or AMVP mode), the BS may beset to 1. When both the P block and the Q block are coded in the currentpicture reference mode, and the difference between their block vectorsis greater than or equal to a predetermined threshold difference, the BSmay be set to 1. Here, the threshold difference may be a fixed value(e.g., 4, 8, 16) pre-committed to the encoding/decoding device.

Since dSam3 is derived using one or more pixels belonging to the fourthpixel line through the same method as dSam0 described above, a detaileddescription will be omitted.

A decision value may be derived based on the derived dSam0 and dSam3.For example, when both dSam0 and dSam3 are 1, the decision value may beset to a first value (e.g. 3), otherwise, the decision value may be setto a second value (e.g., 1 or 2).

Referring to FIG. 16, a filter type of a deblocking filter may bedetermined based on the derived decision value (S1620).

In the encoding/decoding apparatus, a plurality of filter types havingdifferent filter lengths may be defined. As an example of the filtertype, there may be a long filter having the longest filter length, ashort filter having the shortest filter length, or one or more middlefilters that are longer than the short filter and shorter than the longfilter. The number of filter types defined in the encoding/decodingapparatus may be 2, 3, 4 or more.

For example, when the decision value is the first value, the long filtermay be used, and when the decision value is the second value, the shortfilter may be used. Alternatively, when the decision value is the firstvalue, one of the long filter or the middle filter may be selectivelyused, and when the decision value is the second value, the short filtermay be used. Alternatively, when the decision value is the first value,the long filter is used, and when the decision value is not the firstvalue, either the short filter or the middle filter may be selectivelyused. In particular, when the decision value is 2, the middle filter maybe used, and when the decision value is 1, the short filter may be used.

Referring to FIG. 16, filtering may be performed on an edge of areconstructed picture based on a deblocking filter according to thedetermined filter type (S1630).

The deblocking filter may be applied to a plurality of pixels located inboth directions based on an edge and located in the same pixel line.Here, a plurality of pixels to which the deblocking filter is applied isreferred to as a filtering region, and the length (or number of pixels)of the filtering region may be different for each filter type. Thelength of the filtering region may be interpreted as having the samemeaning as the filter length of the aforementioned filter type.Alternatively, the length of the filtering region may mean a sum of thenumber of pixels to which the deblocking filter is applied in the Pblock and the number of pixels to which the deblocking filter is appliedin the Q block.

In this embodiment, it is assumed that three filter types, that is, thelong filter, the middle filter, and the short filter, are defined in anencoding/decoding apparatus, and a deblocking filtering method for eachfilter type will be described. However, the present disclosure is notlimited thereto, and only the long filter and the middle filter may bedefined, only the long filter and the short filter may be defined, oronly the middle filter and the short filter may be defined.

1. In Case of Long Filter-Based Deblocking Filtering

For convenience of explanation, it is assumed that the edge type is avertical edge, and the currently filtered pixel (hereinafter, thecurrent pixel q) belongs to the Q block unless otherwise stated. Thefiltered pixel fq may be derived through a weighted average of a firstreference value and a second reference value.

Here, the first reference value may be derived using all or part of thepixels in the filtering area to which the current pixel q belongs. Here,the length (or number of pixels) of the filtering region may be aninteger of 8, 10, 12, 14 or more. Some pixels in the filtering area maybelong to the P block and the other pixels may belong to the Q block.For example, when the length of the filtering region is 10, 5 pixels maybelong to the P block and 5 pixels may belong to the Q block.Alternatively, 3 pixels may belong to the P block and 7 pixels maybelong to the Q block. Conversely, 7 pixels may belong to the P blockand 3 pixels may belong to the Q block. In other words, the longfilter-based deblocking filtering may be performed symmetrically orasymmetrically on the P block and the Q block.

Regardless of the location of the current pixel q, all pixels belongingto the same filtering area may share one and the same first referencevalue. That is, the same first reference value may be used regardless ofwhether the currently filtered pixel is located in the P block or the Qblock. The same first reference value may be used regardless of theposition of the currently filtered pixel in the P block or the Q block.

The second reference value may be derived using at least one of a pixelfarthest from the edge (hereinafter, referred to as a first pixel) amongpixels of the filtering area belonging to the Q block or neighboringpixels of the filtering area. The neighboring pixel may mean at leastone pixel adjacent to the right direction of the filtering area. Forexample, the second reference value may be derived as an average valuebetween one first pixel and one neighboring pixel. Alternatively, thesecond reference value may be derived as an average value between two ormore first pixels and two or more adjacent pixels adjacent to the rightside of the filtering area.

For the weighted average, predetermined weights f1 and f2 may be appliedto the first reference value and the second reference value,respectively. Specifically, the encoding/decoding apparatus may define aplurality of weight sets, and may set the weight f1 by selectively usingany one of the plurality of weight sets. The selection may be performedin consideration of the length (or number of pixels) of the filteringregion belonging to the Q block. For example, the encoding/decodingapparatus may define a weight set as shown in Table 9 below. Each weightset may consist of one or more weights corresponding to each location ofthe pixel to be filtered. Accordingly, from among a plurality of weightsbelonging to the selected weight set, a weight corresponding to theposition of the current pixel q may be selected and applied to a currentpixel q. The number of weights constituting the weight set may be thesame as the length of the filtering region belonging to the Q block. Aplurality of weights constituting one weight set may be sampled at apredetermined interval within a range of an integer greater than 0 andless than 64. Here, 64 is only an example, and may be larger or smallerthan 64. The predetermined interval may be 9, 13, 17, 21, 25 or more.The interval may be variably determined according to the length L of thefiltering region included in the Q block. Alternatively, a fixed spacingmay be used regardless of L.

TABLE 9 Length of filtering area belonging to Q block (L) Weight set L >5 {59, 50, 41, 32, 23, 14, 5} 5 {58, 45, 32, 19, 6} L < 5 {53, 32, 11}

Referring to Table 9, when the length (L) of the filtering areabelonging to the Q block is greater than 5, {59, 50, 41, 32, 23, 14, 5}may be selected among three weight sets, and when L is 5, {58, 45, 32,19, 6} may be selected, and when L is less than 5, {53, 32, 11} may beselected. However, Table 9 is only an example of a weight set, and thenumber of weight sets defined in the encoding/decoding apparatus may be2, 4 or more.

Also, when L is 7 and the current pixel is a first pixel q0 based on theedge, a weight 59 may be applied to the current pixel. When the currentpixel is a second pixel q1 based on the edge, a weight 50 may be appliedto the current pixel, and when the current pixel is a seventh pixel q6based on the edge, a weight 5 may be applied to the current pixel.

A weight f2 may be determined based on the pre-determined weight f1. Forexample, the weight f2 may be determined as a value obtained bysubtracting the weight f1 from a pre-defined constant. Here, thepre-defined constant is a fixed value pre-defined in theencoding/decoding apparatus, and may be 64. However, this is only anexample, and an integer greater than or less than 64 may be used.

2. In Case of Middle Filter-Based Deblocking Filtering

The filter length of the middle filter may be smaller than the filterlength of the long filter. The length (or number of pixels) of thefiltering region according to the middle filter may be smaller than thelength of the filtering region according to the aforementioned longfilter.

For example, the length of the filtering area according to the middlefilter may be 6, 8 or more. Here, the length of the filtering regionbelonging to the P block may be the same as the length of the filteringregion belonging to the Q block. However, the present invention is notlimited thereto, and the length of the filtering region belonging to theP block may be longer or shorter than the length of the filtering regionbelonging to the Q block.

Specifically, a filtered pixel fq may be derived using a current pixel qand at least one neighboring pixel adjacent to the current pixel q.Here, the neighboring pixel may include at least one of one or morepixels adjacent to the left of the current pixel q (hereinafter, leftperipheral pixels) or one or more pixels adjacent to the right of thecurrent pixel q (hereinafter, right peripheral pixels).

For example, when the current pixel q is q0, two left neighboring pixelsp0 and p1 and two right neighboring pixels q1 and q2 may be used. Whenthe current pixel q is q1 , two left neighboring pixels p0 and q0 andone right neighboring pixel q2 may be used. When the current pixel q isq2 , three left neighboring pixels p0 , q0, and q1 and one rightneighboring pixel q3 may be used.

3. Short Filter-Based Deblocking Filtering

The filter length of the short filter may be smaller than that of themiddle filter. The length (or number of pixels) of the filtering regionaccording to the short filter may be smaller than the length of thefiltering region according to the above-described middle filter. Forexample, the length of the filtering region according to the shortfilter may be 2, 4 or more.

Specifically, a filtered pixel fq may be derived by adding orsubtracting a predetermined first offset (offset1) to a current pixel q.Here, the first offset may be determined based on a difference valuebetween the pixels of the P block and the pixels of the Q block. Forexample, as shown in Equation 5 below, the first offset may bedetermined based on a difference value between the pixel p0 and thepixel q0 and a difference value between the pixel p1 and the pixel q1.However, filtering for the current pixel q may be performed only whenthe first offset is smaller than a predetermined threshold. Here, thethreshold is derived based on the above-described quantization parameter(QP) and block boundary strength (BS), and a detailed descriptionthereof will be omitted.offset1=(9*(q0−p0)−3*(q1−p1)+8)>>4

Alternatively, the filtered pixel fq may be derived by adding apredetermined second offset (offset2) to the current pixel q. Here, thesecond offset may be determined in consideration of at least one of adifference (or change amount) between the current pixel q and theneighboring pixels or the first offset. Here, the neighboring pixels mayinclude at least one of a left pixel or a right pixel of the currentpixel q. For example, the second offset may be determined as in Equation6 below.offset2=(((q2+q0+1)>>1)−q1−offset1)>>1

The above-described filtering method is not limited to being appliedonly to the deblocking filter, and may be applied similarly or similarlyto an adaptive sample offset (SAO), an adaptive loop filter (ALF), etc.,which are examples of an in-loop filter.

Exemplary methods of the present disclosure are expressed as a series ofoperations for clarity of explanation, but this is not intended to limitthe order in which steps are performed, and each step may be performedsimultaneously or in a different order if necessary. In order toimplement the method according to the present disclosure, the exemplarysteps may include additional steps, other steps may be includedexcluding some steps, or may include additional other steps excludingsome steps.

Various embodiments of the present disclosure are not intended to listall possible combinations, but to describe representative aspects of thepresent disclosure, and matters described in the various embodiments maybe applied independently or may be applied in combination of two ormore.

In addition, various embodiments of the present disclosure may beimplemented by hardware, firmware, software, or a combination thereof.For implementation by hardware, one or more ASICs (Application SpecificIntegrated Circuits), DSPs (Digital Signal Processors), DSPDs (DigitalSignal Processing Devices), PLDs (Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), general purpose It may be implementedby a processor (general processor), a controller, a microcontroller, amicroprocessor, etc.

The scope of the present disclosure includes software ormachine-executable instructions (e.g., operating systems, applications,firmware, programs, etc.) that cause an operation according to themethod of various embodiments to be executed on a device or computer,and or a non-transitory computer-readable medium (non-transitorycomputer-readable medium) which stores such software or instructionsetc., and is executable on a device or a computer.

The invention claimed is:
 1. A method of decoding an image, comprising:obtaining a reconstructed picture of a current picture; determiningwhether to perform filtering on a boundary of a current division unitbased on a predetermined flag, the current division unit being one of aplurality of division units belonging to the current picture; andperforming filtering on the boundary of the current division unit inresponse to the determination, wherein each of the division unitsincludes at least one of a sub-picture, a slice, or a tile, wherein theflag includes at least one of a first flag indicating whether filteringis performed on boundaries of the division units within the currentpicture or a second flag indicating whether filtering is performed onthe boundary of the current division unit, wherein whether to performfiltering on the boundary of the current division unit is determined byfurther considering a third flag indicating whether filtering isperformed on a boundary of a neighboring division unit adjacent to thecurrent division unit, wherein when the first flag is a first value, itis restricted so that filtering is not performed on the boundaries ofthe division units within the current picture, and when the first flagis a second value, the restriction on the boundaries of the divisionunits within the current picture is not imposed, and wherein when thesecond flag is a first value, filtering is allowed to be performed onthe boundary of the current division unit, and when the second flag is asecond value, it is restricted so that filtering is not performed on theboundary of the current division unit.
 2. The method of claim 1, whereinthe second flag is decoded only when the restriction on the boundariesof the division units within the current picture is not imposedaccording to the first flag.
 3. The method of claim 1, wherein aposition of the neighboring division unit is determined based on whetherthe boundary of the current division unit is a vertical boundary or ahorizontal boundary.
 4. The method of claim 1, wherein performing thefiltering comprises: specifying a block boundary for deblockingfiltering; deriving a decision value for the block boundary; determininga filter type for the deblocking filtering based on the decision value;and performing the filtering on the block boundary based on the filtertype.
 5. A method of encoding an image, comprising: obtaining areconstructed picture of a current picture; determining and encodingwhether to perform filtering on a boundary of a current division unit,the current division unit being one of a plurality of division unitsbelonging to the current picture; and performing filtering on theboundary of the current division unit in response to the determination,wherein each of the division units includes at least one of asub-picture, a slice, or a tile, wherein the determining and encodingwhether to perform filtering on the boundary of the current divisionunit comprises, encoding at least one of a first flag indicating whetherfiltering is performed on boundaries of a division units within thecurrent picture or a second flag indicating whether filtering isperformed on the boundary of the current division unit, wherein whetherto perform filtering on the boundary of the current division unit isdetermined by further considering a third flag indicating whetherfiltering is performed on a boundary of a neighboring division unitadjacent to the current division unit, wherein when the first flag is afirst value, it is restricted so that filtering is not performed on theboundaries of the division units within the current picture, and whenthe first flag is a second value, the restriction on the boundaries ofthe division units within the current picture is not imposed, andwherein when the second flag is a first value, filtering is allowed tobe performed on the boundary of the current division unit, and when thesecond flag is a second value, it is restricted so that filtering is notperformed on the boundary of the current division unit.
 6. The method ofclaim 5, wherein the second flag is encoded only when the restriction onthe boundaries of the division units within the current picture is notimposed.
 7. The method of claim 6, wherein a position of the neighboringdivision unit is determined based on whether the boundary of the currentdivision unit is a vertical boundary or a horizontal boundary.
 8. Themethod of claim 6, wherein performing the filtering comprises:specifying a block boundary for deblocking filtering; deriving adecision value for the block boundary; determining a filter type for thedeblocking filtering based on the decision value; and performing thefiltering on the block boundary based on the filter type.
 9. Anon-transitory computer-readable storage medium having instructionsstored thereon that, when executed, cause one or more processor to:obtaining a reconstructed picture of a current picture; determiningwhether to perform filtering on a boundary of a current division unitbased on a predetermined flag, the current division unit being one of aplurality of division units belonging to the current picture; andperforming filtering on the boundary of the current division unit inresponse to the determination, wherein each of the division unitsincludes at least one of a sub-picture, a slice, or a tile, wherein theflag includes at least one of a first flag indicating whether filteringis performed on boundaries of the division units within the currentpicture or a second flag indicating whether filtering is performed onthe boundary of the current division unit, wherein whether to performfiltering on the boundary of the current division unit is determined byfurther considering a third flag indicating whether filtering isperformed on a boundary of a neighboring division unit adjacent to thecurrent division unit, wherein when the first flag is a first value, itis restricted so that filtering is not performed on the boundaries ofthe division units within the current picture, and when the first flagis a second value, the restriction on the boundaries of the divisionunits within the current picture is not imposed, and wherein when thesecond flag is a first value, filtering is allowed to be performed onthe boundary of the current division unit, and when the second flag is asecond value, it is restricted so that filtering is not performed on theboundary of the current division unit.
 10. A non-transitorycomputer-readable storage medium storing a bitstream that is generatedby a method of encoding an image, the method comprising: obtaining areconstructed picture of a current picture; determining and encodingwhether to perform filtering on a boundary of a current division unit,the current division unit being one of a plurality of division unitsbelonging to the current picture; and performing filtering on theboundary of the current division unit in response to the determination,wherein each of the division units includes at least one of asub-picture, a slice, or a tile, wherein the determining and encodingwhether to perform filtering on the boundary of the current divisionunit comprises, encoding at least one of a first flag indicating whetherfiltering is performed on boundaries of a division units within thecurrent picture or a second flag indicating whether filtering isperformed on the boundary of the current division unit, wherein whetherto perform filtering on the boundary of the current division unit isdetermined by further considering a third flag indicating whetherfiltering is performed on a boundary of a neighboring division unitadjacent to the current division unit, wherein when the first flag is afirst value, it is restricted so that filtering is not performed on theboundaries of the division units within the current picture, and whenthe first flag is a second value, the restriction on the boundaries ofthe division units within the current picture is not imposed, andwherein when the second flag is a first value, filtering is allowed tobe performed on the boundary of the current division unit, and when thesecond flag is a second value, it is restricted so that filtering is notperformed on the boundary of the current division unit.